package com.hsjk.szwj.module.pay.controller.app.division.vo;

import com.hsjk.szwj.module.pay.dal.dataobject.config.AbstractResp;
import com.hsjk.szwj.module.pay.dal.dataobject.division.MchDivisionReceiverDO;
import lombok.Data;
import org.springframework.beans.BeanUtils;

import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * @author chenjiawei
 * @desc
 * @Date 2023/08/25 17:51
 **/
@Data
public class DivisionReceiverBindRespVO extends AbstractResp {

    /**
     * 分账接收者ID
     */
    private Long receiverId;

    /**
     * 接收者账号别名
     */
    private String receiverAlias;

    /**
     * 组ID（便于商户接口使用）
     */
    private Long receiverGroupId;

    /**
     * 商户号
     */
    private Long mchId;

    /**
     * 应用ID
     */
    private Long appId;

    /**
     * 支付接口代码
     */
    private Long ifId;

    /**
     * 分账接收账号类型: 0-个人(对私) 1-商户(对公)
     */
    private Integer accType;

    /**
     * 分账接收账号
     */
    private String accNo;

    /**
     * 分账接收账号名称
     */
    private String accName;

    /**
     * 分账关系类型（参考微信）， 如： SERVICE_PROVIDER 服务商等
     */
    private String relationType;

    /**
     * 当选择自定义时，需要录入该字段。 否则为对应的名称
     */
    private String relationTypeName;


    /**
     * 渠道特殊信息
     */
    private String channelExtInfo;

    /**
     * 绑定成功时间
     */
    private LocalDateTime bindSuccessTime;

    /**
     * 分账比例
     */
    private BigDecimal divisionProfit;

    /**
     * 分账状态 1-绑定成功, 0-绑定异常
     */
    private Integer bindState;

    /**
     * 支付渠道错误码
     */
    private String errCode;

    /**
     * 支付渠道错误信息
     */
    private String errMsg;


    public static DivisionReceiverBindRespVO buildByRecord(MchDivisionReceiverDO record) {

        if (record == null) {
            return null;
        }

        DivisionReceiverBindRespVO result = new DivisionReceiverBindRespVO();
        BeanUtils.copyProperties(record, result);
        result.setBindSuccessTime(record.getBindSuccessTime() != null
                ? record.getBindSuccessTime() : null);

        return result;
    }
}
